#ifndef MINI_WS2812B_H
#include "bflb_core.h"

// 灯珠类型
// 3色
#define WS2812B_TYPE_GRB 3
// 4色
#define WS2812B_TYPE_GRBW 4

// 纳秒级延时 单位:100ns
void ws2812b_delay100ns(uint32_t time);

// 发送数据
void ws2812b_flush();

// 是否初始化
bool ws2812b_isReady();

// 反初始化
void ws2812b_deinit();

// 初始化
void ws2812b_init(uint8_t pin, uint32_t num, uint8_t type);

// 设置单个灯珠颜色
// index 灯珠索引 0开始
// color 灯珠颜色
void ws2812b_setColor(uint32_t index, uint8_t *color);

// 设置连续多个灯珠颜色
// start 开始灯珠索引
// end 结束灯珠索引
// color 灯珠颜色
void ws2812b_setColors(uint32_t start, uint32_t end, uint8_t *color);

// 关闭单个灯珠
// index 灯珠索引 0开始
void ws2812b_setOff(uint32_t index);

// 设置所有灯珠颜色
void ws2812b_setOffAll();

// 设置所有灯珠颜色
void ws2812b_setColorAll(uint8_t *color);

// 复位(只是复位发送状态,并不会清除灯珠现有状态)
void ws2812b_reset();
#endif